# __author__ = 'heyin'
# __date__ = '2018/11/20 11:23'
import pandas as pd
import numpy as np
import string

# np.random.seed(1)
#
# df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'], 'value': np.random.randn(4)})
#
# ret = df2.groupby(by='key')
# # ret是个元组，两个数据，第一个是分组依据的结果值，如上述df，分组后的B,D，E，就是这里指的值
# # 第二个是dataframe，是分到某一组的具体数据
# for i,j in ret:
#     print(i)
#     print(j)
#     print(type(j))  # dataframe
#
# print(ret.count())
# print(ret.sum())  # 分组后求和
# print(ret.std())


df = pd.read_csv('./directory.csv')
print(df.head(3))
print(df.columns)

# 需求，美国和中国哪里的星巴克数量多
# 解决：以Country进行分组，而后统计数量得到结果
country = df.groupby('Country')  # 中国是cn，美国是us
count = country.count()  # 统计所有国家的数量，结果中包含所有的列
# 从count中取出index是US和CN的两行一列数据，列可取任意一列，因为数据都相等
us = count.loc['US', 'Brand']
cn = count.loc['CN', 'Brand']
print('us:%s,cn:%s' % (us, cn))

# 需求：中国每个省份星巴克的数量
# 解决：先以国家和省份进行分组，然后使用count，得到联合索引的dataframe，再从中取出CN

country = df.groupby(by=['Country', 'State/Province'])
count = country.count()
print(count)  # ountry和State/Province 共同作为index存在
print(count.loc['CN', 'Brand'])

country = df.groupby(by=['Country', 'State/Province'])['Country']
print(country.count().loc['CN'])  # series
